//
//  CZUserAccountTools.swift
//  CZ29VVeibo
//
//  Created by apple on 16/6/26.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

class CZUserAccountTools: NSObject {
    
    // 路径
    let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("userAccount.archiver")
    // 保存的用户信息数据对象
    var userAccount: CZUserAccount?
    
    // 判断用户是否登录
    var isLogin:Bool {
        // 如果access_token 为nil 代表没有登录
        return accessToken != nil
    }
    
    // 访问令牌（只读属性）
    var accessToken: String? {
        // 代表没有登录
        if userAccount?.access_token == nil {
            return nil
        }else {
            // 如果expires_Date 于当前时间比较是降序 代表没有过去
            if userAccount?.expires_Date?.compare(NSDate()) == NSComparisonResult.OrderedDescending{
                return userAccount?.access_token
            }else {
                return nil
            }
        }
    }
    
    /*
    - isLogin
    - accessToken
    - 如果判断用户是否登录
    - 未登录
    - 如果我的access_token 为nil
    - 如果我的access_token 有值 但是 过期了
    - 已登录
    - 我的access_token有值 而且没有过期
    */
    // 全局访问点
    static let sharedTools:CZUserAccountTools = CZUserAccountTools()
    
    override init() {
        super.init()
        userAccount = getUserAccount()
    }
    // 保存对象
    func saveUserAccount(userAccount: CZUserAccount){
        // 如果第一次调用我们的单例 userAccount 是nil
        // 然后我马上使用我们的userAccount 需要我们在保存数据的时候 要自己给单例对象身上的属性useraccount 赋值
        self.userAccount = userAccount
        
        
        NSKeyedArchiver.archiveRootObject(userAccount, toFile: path)
    }
    // 获取对象
    func getUserAccount() ->CZUserAccount?{
        // 由于我们第一次获取对象的时候我们根本就没有保存 所以系统返回给我们为nil
        let result = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? CZUserAccount
        return result
    }
}
